package com.cheng.commonlibrary.utlis;

import android.text.TextUtils;
import android.widget.EditText;

import androidx.annotation.IntRange;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class EditUtlis {


    /**
     *限制输入
     *
     * @param editText
     * @param reg
     * @param regEx             传入的正则字符串
     *      * --必须包含 数字,字母,符号 3项组合的 正则表达式
     *      * ^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*)(?=.*[,\.#%'\+\*\-:;^_`].*))[,\.#%'\+\*\-:;^_`0-9A-Za-z]{8,10}$
     *      * --不为纯数字或字母的正在表达式 用于密码验证
     *      * ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
     *      * --密码为8~20位数字,英文,符号至少两种组合的字符
     *      * ^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?![,\.#%'\+\*\-:;^_`]+$)[,\.#%'\+\*\-:;^_`0-9A-Za-z]{8,20}$
     *      *
     *      * /^
     * @return
     */
    public static final String limitInput(EditText editText, String reg, String regEx) {
        String text = editText.getText().toString();
        if (!TextUtils.isEmpty(reg)) {
            regEx = reg;
        }
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(text);
        String str = m.replaceAll("").trim();    // 删掉不是字母或数字的字符
        if (!text.equals(str)) {
            editText.setText(str);  // 设置EditText的字符
            editText.setSelection(str.length()); // 因为删除了字符，要重写设置新的光标所在位置
        }
        return str;
    }

    /**
     * 限制EditText为:只能输入 >>> 金额(#0.00)
     */
    public static final CharSequence limitInputAmount(EditText editText, CharSequence s) {
        return limitInputAmount(editText, s, 2);
    }

    /**
     * 限制EditText为:只能输入 >>> 金额，保留小数点后 count 位
     */
    public static final CharSequence limitInputAmount(EditText editText, CharSequence s, @IntRange(from = 1, to = 8) int count) {
        if (s.toString().contains(".")) {
            if (s.length() - 1 - s.toString().indexOf(".") > count) {
                s = s.toString().subSequence(0,
                        s.toString().indexOf(".") + count + 1);
                editText.setText(s);
                editText.setSelection(s.length());
            }
        }
        if (s.toString().trim().substring(0).equals(".")) {
            s = "0" + s;
            editText.setText(s);
            editText.setSelection(2);
        }
        if (s.toString().startsWith("0") && s.toString().trim().length() > 1) {
            if (!s.toString().substring(1, 2).equals(".")) {
                s = s.subSequence(0, 1);
                editText.setText(s);
                editText.setSelection(1);
            }
        }
        return s;
    }


}
